from concurrent import futures
import time
import grpc

import sys
sys.path.append('../proto')
import llm_pb2_grpc
import llm_handler

def serve():
    _ONE_DAY_IN_SECONDS = 60 * 60 * 24
    # gRPC 服务器
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=1))
    llm_pb2_grpc.add_LLMChatApiServicer_to_server(llm_handler.LlmHandler(), server)
    server.add_insecure_port('[::]:50051')
    server.start()  # start() 不会阻塞，如果运行时你的代码没有其它的事情可做，你可能需要循环等待。
    try:
        while True:
            time.sleep(_ONE_DAY_IN_SECONDS)
    except KeyboardInterrupt:
        server.stop(0)


if __name__ == '__main__':
    serve()
